﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;

namespace Sistema_de_Patrimonio.SDP_DAL
{
    class Articulo_DAL
    {

        public DataSet ArticuloLoad()
        {
            //EL @ es para dividir una línea de código en 2
            SqlConnection Connection = Common_Files.Connection.OpenConecction();
            SqlDataAdapter Command = new SqlDataAdapter(@"Select Articulo_Inventario as 'Inventario', Articulo_Cuenta as 'Cuenta', Articulo_Descripcion as 'Descripción', Articulo_Precio as 'Precio', Articulo_Residual as 'Valor Residual', Articulo_Concepto as 'Concepto', Articulo_FechaAdquirido as 'Fecha de Adquisición', Articulo_FechaInforme as 'Fecha de Informe', Articulo_TipoDocumento as 'Tipo de Doc.', Articulo_NumeroDocumento as 'Documento N°', Articulo_Porcentaje as 'Porcentaje de Ajuste', Articulo_ResolucionBaja, Dependencia_ID from Articulos", Connection);
            DataSet DataSet = new DataSet();
            Command.Fill(DataSet);
            return (DataSet);
        }

        public bool ExisteArticulo(UInt32 Inventario, String Cuenta)
        {
            //EL @ es para dividir una línea de código en 2
            SqlConnection Connection = Common_Files.Connection.OpenConecction();
            SqlDataAdapter Command = new SqlDataAdapter(@"Select * from Articulos where Articulo_Inventario = '" + Inventario + "' and Articulo_Cuenta = '" + Cuenta + "' ", Connection);
            DataSet DataSet = new DataSet();
            Command.Fill(DataSet);
            if (DataSet.Tables[0].Rows.Count > 0)
                return true;
            else return false;
        }

        public DataSet CargarCuenta()
        {
            //EL @ es para dividir una línea de código en 2
            SqlConnection Connection = Common_Files.Connection.OpenConecction();
            SqlDataAdapter Command = new SqlDataAdapter(@"Select Distinct Articulo_Cuenta as 'Cuenta' from Articulos where Articulo_Cuenta > 0 order by 1 asc ", Connection);
            DataSet DataSet = new DataSet();
            Command.Fill(DataSet);
            return (DataSet);
        }

        public DataSet ArticuloLoadResolucion(UInt32 Resolucion_ID)
        {
            //EL @ es para dividir una línea de código en 2
            SqlConnection Connection = Common_Files.Connection.OpenConecction();
            SqlDataAdapter Command = new SqlDataAdapter(@"Select Articulo_Inventario as 'Inventario', Articulo_Cuenta as 'Cuenta', Articulo_Descripcion as 'Descripción', Dependencia_ID from Articulos where Articulo_ResolucionBaja = '" + Resolucion_ID + "'", Connection);
            DataSet DataSet = new DataSet();
            Command.Fill(DataSet);
            return (DataSet);
        }

        public DataSet ArticuloPorResolucion()
        {
            //EL @ es para dividir una línea de código en 2
            SqlConnection Connection = Common_Files.Connection.OpenConecction();
            SqlDataAdapter Command = new SqlDataAdapter(@"Select DISTINCT Articulo_ResolucionBaja as 'Resolución' from Articulos where Articulo_ResolucionBaja > 0", Connection);
            DataSet DataSet = new DataSet();
            Command.Fill(DataSet);
            return (DataSet);
        }

        public DataSet ArticuloLoadInventarioCuenta(UInt32 Inventario, UInt32 Cuenta)
        {
            //EL @ es para dividir una línea de código en 2
            SqlConnection Connection = Common_Files.Connection.OpenConecction();
            SqlDataAdapter Command = new SqlDataAdapter(@"Select Articulo_Inventario as 'Inventario', Articulo_Cuenta as 'Cuenta', Articulo_Descripcion as 'Descripción', Articulo_Precio as 'Precio', Dependencia_ID from Articulos where Articulo_Inventario = '" + Inventario + "' and Articulo_Cuenta = '" + Cuenta + "'", Connection);
            DataSet DataSet = new DataSet();
            Command.Fill(DataSet);
            return (DataSet);
        }

        public void ArticuloInsert(Common_Files.Definitions.Articulo Articulo)
        {
            //EL @ es para dividir una línea de código en 2
            SqlConnection Connection = Common_Files.Connection.OpenConecction();
            SqlCommand Command = new SqlCommand(@"insert into Articulos (Articulo_Inventario, Articulo_Cuenta, Articulo_Descripcion, Articulo_Precio, Articulo_Residual, Articulo_Concepto, Articulo_FechaAdquirido, Articulo_FechaInforme, Articulo_TipoDocumento, Articulo_NumeroDocumento, Articulo_Porcentaje, Articulo_ResolucionBaja, Dependencia_Id, Articulo_CargadoPor, Articulo_ModificadoPor) 
                                                                values ('" + Articulo.Articulo_Inventario + "', '" + Articulo.Articulo_Cuenta + "','" + Articulo.Articulo_Descripcion + "','" + Articulo.Articulo_Precio + "', '" + Articulo.Articulo_Residual + "', '" + Articulo.Articulo_Concepto + "','" + Articulo.Articulo_FechaAdquirido.ToShortDateString() + "', '" + Articulo.Articulo_FechaInforme.ToShortDateString() + "', '" + Articulo.Articulo_TipoDocumento + "', '" + Articulo.Articulo_NumeroDoc + "', '" + Articulo.Articulo_Porcentaje + "', '" + Articulo.Articulo_ResolucionBaja + "', '" + Articulo.Dependencia_ID + "', '" + Articulo.Articulo_CargadoPor + "', ' ')", Connection);
            Common_Files.Connection.CloseConecction(Connection, Command);
        }

        public void ArticuloUpdate(Common_Files.Definitions.Articulo Articulo)
        {
            SqlConnection Connection = Common_Files.Connection.OpenConecction();
            SqlCommand Command = new SqlCommand("update Articulos set Articulo_Inventario= '" + Articulo.Articulo_Inventario + "' , Articulo_Cuenta = '" + Articulo.Articulo_Cuenta + "', Articulo_Descripcion = '" + Articulo.Articulo_Descripcion + "', Articulo_Precio = '" + Articulo.Articulo_Precio + "' , Articulo_Residual = '" + Articulo.Articulo_Residual + "' ,"
                                                + "Articulo_Concepto = '" + Articulo.Articulo_Concepto + "', Articulo_FechaAdquirido = '" + Articulo.Articulo_FechaAdquirido.ToShortDateString() + "', Articulo_FechaInforme = '" + Articulo.Articulo_FechaInforme.ToShortDateString() + "', Articulo_TipoDocumento = '" + Articulo.Articulo_TipoDocumento + "', Articulo_NumeroDocumento = '" + Articulo.Articulo_NumeroDoc + "', Articulo_Porcentaje = '" + Articulo.Articulo_Porcentaje + "', Dependencia_Id = '" + Articulo.Dependencia_ID + "', Articulo_ModificadoPor = '" + Articulo.Articulo_ModificadoPor + "' where Articulo_Inventario = '" + Articulo.Articulo_Inventario + "' and Articulo_Cuenta = '" + Articulo.Articulo_Cuenta + "'", Connection);
            Command.ExecuteNonQuery();
            Connection.Close();
            //Common_Files.Connection.CloseConecction(Connection, Command);
        }

        public void ArticuloUpdateResolucion(UInt32 Inventario, UInt32 Cuenta, UInt32 Resolucion)
        {
            SqlConnection Connection = Common_Files.Connection.OpenConecction();
            SqlCommand Command = new SqlCommand("update Articulos set Articulo_ResolucionBaja = '" + Resolucion + "' where Articulo_Inventario = '" + Inventario + "' and Articulo_Cuenta = '" + Cuenta + "'", Connection);
            Common_Files.Connection.CloseConecction(Connection, Command);

           /* SqlConnection Connection = Common_Files.Connection.OpenConecction();
            SqlCommand Command = new SqlCommand("update Articulos set Articulo_Inventario= '" + Articulo.Articulo_Inventario + "' , Articulo_Cuenta = '" + Articulo.Articulo_Cuenta + "', Articulo_Descripcion = '" + Articulo.Articulo_Descripcion + "', Articulo_Precio = '" + Articulo.Articulo_Precio + "' , Articulo_Residual = '" + Articulo.Articulo_Residual + "' ,"
                                                + "Articulo_Concepto = '" + Articulo.Articulo_Concepto + "', Articulo_FechaAdquirido = '" + Articulo.Articulo_FechaAdquirido.ToShortDateString() + "', Articulo_FechaInforme = '" + Articulo.Articulo_FechaInforme.ToShortDateString() + "', Articulo_TipoDocumento = '" + Articulo.Articulo_TipoDocumento + "', Articulo_NumeroDocumento = '" + Articulo.Articulo_NumeroDoc + "', Articulo_Porcentaje = '" + Articulo.Articulo_Porcentaje + "', Dependencia_Id = '" + Articulo.Dependencia_ID + "', Articulo_ModificadoPor = '" + Articulo.Articulo_ModificadoPor + "' where Articulo_Inventario = '" + Articulo.Articulo_Inventario + "' and Articulo_Cuenta = '" + Articulo.Articulo_Cuenta + "'", Connection);
            Command.ExecuteNonQuery();
            Connection.Close();*/
        }

        public void ArticuloDelete(UInt32 Inventario, UInt32 Cuenta)
        {
            SqlConnection Connection = Common_Files.Connection.OpenConecction();
           SqlCommand Command = new SqlCommand("delete from Articulos where Articulo_Inventario = '" + Inventario + "' and Articulo_Cuenta = '" + Cuenta + "'", Connection);
           Common_Files.Connection.CloseConecction(Connection, Command);
        }

        public DataSet ArticuloSearch(String Parameter, String Column)
        {
            String query = string.Format("Select Articulo_Inventario as 'Inventario', Articulo_Cuenta as 'Cuenta', Articulo_Descripcion as 'Descripción', Articulo_Precio as 'Precio', Articulo_Residual as 'Valor Residual', Articulo_Concepto as 'Concepto', Articulo_FechaAdquirido as 'Fecha de Adquisición', Articulo_FechaInforme as 'Fecha de Informe', Articulo_TipoDocumento as 'Tipo de Doc.', Articulo_NumeroDocumento as 'Documento N°', Articulo_Porcentaje as 'Porcentaje de Ajuste', Articulo_ResolucionBaja, Dependencia_ID from Articulos where {0} like '%" + Parameter + "%'", Column);
            SqlConnection Connection = Common_Files.Connection.OpenConecction();
            SqlDataAdapter Command = new SqlDataAdapter(query, Connection);
            DataSet DataSet = new DataSet();
            Command.Fill(DataSet);
            return (DataSet);
        }
    }
}
